import java.util.Scanner;
import java.util.Stack;


public class day230326 {
    // 合法括号序列判断
    public static boolean chkParenthesis(String A, int n) {
        // 字符串长度为奇数,括号肯定不匹配
        if (n % 2 == 1) {
            return false;
        }

        Stack<Character> stack = new Stack<>();
        // 栈存放 左括号

        for (int i = 0; i < n; i++) {
            char ch = A.charAt(i);
            if (ch == '(') {
                // 左括号直接入栈
                stack.push(ch);
            } else if (ch == ')' && !stack.isEmpty()) {
                // 右括号, 且栈不为空的情况下
                if (stack.peek() == '(') {
                    // 栈顶是左括号, 匹配
                    stack.pop();
                } else {
                    return false;
                }
            } else {
                // 其他情况
                return false;
            }
        }
        // 不为空, 说明左括号多了, 不合法
        return stack.isEmpty();
    }

    public static void main3(String[] args) {
        String str = "((((";
        System.out.println(chkParenthesis(str, str.length()));
    }

    // Fibonacci数列


    // 1. 遍历 Fibonacci数列 找到与 n 相差最小的Fibonacci数
    public static int fib(int n) {
        if (n == 1 || n == 0) {
            return n;
        }
        return fib(n - 1) + fib(n - 2);
    }
    public static void main1(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        // 给你一个数, 计算出这个数与 Fibonacci 数的最小差
        int f = 1;// 记录与n 差值最小的 Fibonacci 数
        int i = 3;// 第 i 位 Fibonacci 数
        while (true) {
            int tmp = fib(i);
            // 比较 fib 于 n 的绝对值
            if (Math.abs(n - tmp) < Math.abs(n - f)) {
                f = tmp;
            } else {
                break;
            }
            i++;
        }
        System.out.println(Math.abs(f - n));
    }

    // 2. 找到 n 左右两边的 Fibonacci 数
    // 时间复杂度更低
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int f1 = 0, f2 = 1;
        int f3 = 0;
        while (f2 < n) {

            // n 输入范围 1~1000000
            // 结束条件, f1 < n <= f2

            f3 = f1 + f2;
            f1 = f2;
            f2 = f3;
        }
        int ret = Math.min(n - f1, f2 - n);
        System.out.println(ret);
    }

    public static void main4(String[] args) {
        Scanner sc = new Scanner(System.in);
        while (sc.hasNextInt()) {
            int n = sc.nextInt();

            if (n == 0 || n == 1) {
                System.out.println("0");
                break;
            }

            int f1 = 0;
            int f2 = 1;
            int min = 0;

            while (true) {
                int tmp = f1 + f2;
                if (n - tmp > 0) {
                    // tmp 还在 n 的左边
                    min = n - tmp;
                } else {
                    // tmp 在 n 的右边
                    // 比较 n 左右两边Fibonacci 数, 哪个差值更小
                    if (tmp - n < min) {
                        min = tmp - n;
                    }
                    System.out.println(min);
                    break;
                }
                f1 = f2;
                f2 = tmp;
            }
        }
    }
}